﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Hiro.Interfaces
{
    /// <summary>
    /// Represents a type that can store activation points and their respective dependency mappings.
    /// </summary>
    public interface IDependencyContainer
    {
        /// <summary>
        /// Determines whether or not a particular service dependency exists in the current dependency map.
        /// </summary>
        /// <param name="dependency">The target service dependency.</param>
        /// <returns><c>true</c> if the service exists; otherwise, it will return <c>false</c>.</returns>
        bool Contains(IDependency dependency);

        /// <summary>
        /// Determines whether or not the given dependency can be mapped to an activation point that can be resolved.
        /// </summary>
        /// <param name="dependency">The target service dependency.</param>
        /// <returns><c>true</c> if the service exists and can be instantiated; otherwise, it will return <c>false</c>.</returns>
        bool CanResolve(IDependency dependency);
    }
}
